[
    {
        "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events",
        "Counter": "0,1,2,3",
        "EventName": "UNC_P_CLOCKTICKS",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter.  (filter_band0=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency",
        "Counter": "0,1,2,3",
        "EventCode": "0xb",
        "EventName": "UNC_P_FREQ_BAND0_CYCLES",
        "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_band0_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter.  (filter_band1=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency",
        "Counter": "0,1,2,3",
        "EventCode": "0xc",
        "EventName": "UNC_P_FREQ_BAND1_CYCLES",
        "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_band1_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter.  (filter_band2=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency",
        "Counter": "0,1,2,3",
        "EventCode": "0xd",
        "EventName": "UNC_P_FREQ_BAND2_CYCLES",
        "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_band2_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to the frequency that is configured in the filter.  (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency",
        "Counter": "0,1,2,3",
        "EventCode": "0xe",
        "EventName": "UNC_P_FREQ_BAND3_CYCLES",
        "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_band3_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of times that the uncore transitioned a frequency greater than or equal to the frequency that is configured in the filter.  (filter_band0=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band0_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xb",
        "EventName": "UNC_P_FREQ_BAND0_TRANSITIONS",
        "Filter": "edge=1",
        "MetricExpr": "(UNC_P_FREQ_BAND0_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_band0_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter.  (filter_band1=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band1_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xc",
        "EventName": "UNC_P_FREQ_BAND1_TRANSITIONS",
        "Filter": "edge=1",
        "MetricExpr": "(UNC_P_FREQ_BAND1_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_band1_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter.  (filter_band2=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band2_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xd",
        "EventName": "UNC_P_FREQ_BAND2_TRANSITIONS",
        "Filter": "edge=1",
        "MetricExpr": "(UNC_P_FREQ_BAND2_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_band2_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to the frequency that is configured in the filter.  (filter_band3=XXX, with XXX in 100Mhz units). One can also use inversion (filter_inv=1) to track cycles when we were less than the configured frequency. Derived from unc_p_freq_band3_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xe",
        "EventName": "UNC_P_FREQ_BAND3_TRANSITIONS",
        "Filter": "edge=1",
        "MetricExpr": "(UNC_P_FREQ_BAND3_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_band3_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C0.  It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details",
        "Counter": "0,1,2,3",
        "EventCode": "0x80",
        "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0",
        "Filter": "occ_sel=1",
        "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "power_state_occupancy.cores_c0 %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C3.  It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details",
        "Counter": "0,1,2,3",
        "EventCode": "0x80",
        "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3",
        "Filter": "occ_sel=2",
        "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "power_state_occupancy.cores_c3 %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C6.  It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events ",
        "Counter": "0,1,2,3",
        "EventCode": "0x80",
        "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6",
        "Filter": "occ_sel=3",
        "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "power_state_occupancy.cores_c6 %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that we are in external PROCHOT mode.  This mode is triggered when a sensor off the die determines that something off-die (like DRAM) is too hot and must throttle to avoid damaging the chip",
        "Counter": "0,1,2,3",
        "EventCode": "0xa",
        "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES",
        "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "prochot_external_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles when temperature is the upper limit on frequency",
        "Counter": "0,1,2,3",
        "EventCode": "0x4",
        "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES",
        "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_max_limit_thermal_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles when the OS is the upper limit on frequency",
        "Counter": "0,1,2,3",
        "EventCode": "0x6",
        "EventName": "UNC_P_FREQ_MAX_OS_CYCLES",
        "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_max_os_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles when power is the upper limit on frequency",
        "Counter": "0,1,2,3",
        "EventCode": "0x5",
        "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES",
        "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_max_power_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles when current is the upper limit on frequency",
        "Counter": "0,1,2,3",
        "EventCode": "0x7",
        "EventName": "UNC_P_FREQ_MAX_CURRENT_CYCLES",
        "MetricExpr": "(UNC_P_FREQ_MAX_CURRENT_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_max_current_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Cycles spent changing Frequency",
        "Counter": "0,1,2,3",
        "EventCode": "0x60",
        "EventName": "UNC_P_FREQ_TRANS_CYCLES",
        "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_trans_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xb",
        "EventName": "UNC_P_FREQ_GE_1200MHZ_CYCLES",
        "Filter": "filter_band0=12",
        "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_ge_1200mhz_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xc",
        "EventName": "UNC_P_FREQ_GE_2000MHZ_CYCLES",
        "Filter": "filter_band1=20",
        "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_ge_2000mhz_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xd",
        "EventName": "UNC_P_FREQ_GE_3000MHZ_CYCLES",
        "Filter": "filter_band2=30",
        "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_ge_3000mhz_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore was running at a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xe",
        "EventName": "UNC_P_FREQ_GE_4000MHZ_CYCLES",
        "Filter": "filter_band3=40",
        "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_ge_4000mhz_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 1.2Ghz. Derived from unc_p_freq_band0_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xb",
        "EventName": "UNC_P_FREQ_GE_1200MHZ_TRANSITIONS",
        "Filter": "edge=1,filter_band0=12",
        "MetricExpr": "(UNC_P_FREQ_GE_1200MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_ge_1200mhz_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of times that the uncore transitioned to a frequency greater than or equal to 2Ghz. Derived from unc_p_freq_band1_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xc",
        "EventName": "UNC_P_FREQ_GE_2000MHZ_TRANSITIONS",
        "Filter": "edge=1,filter_band1=20",
        "MetricExpr": "(UNC_P_FREQ_GE_2000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_ge_2000mhz_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 3Ghz. Derived from unc_p_freq_band2_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xd",
        "EventName": "UNC_P_FREQ_GE_3000MHZ_TRANSITIONS",
        "Filter": "edge=1,filter_band2=30",
        "MetricExpr": "(UNC_P_FREQ_GE_3000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_ge_3000mhz_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    },
    {
        "BriefDescription": "Counts the number of cycles that the uncore transitioned to a frequency greater than or equal to 4Ghz. Derived from unc_p_freq_band3_cycles",
        "Counter": "0,1,2,3",
        "EventCode": "0xe",
        "EventName": "UNC_P_FREQ_GE_4000MHZ_TRANSITIONS",
        "Filter": "edge=1,filter_band3=40",
        "MetricExpr": "(UNC_P_FREQ_GE_4000MHZ_CYCLES / UNC_P_CLOCKTICKS) * 100.",
        "MetricName": "freq_ge_4000mhz_cycles %",
        "PerPkg": "1",
        "Unit": "PCU"
    }
]
